﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SmartWMS.Common.Helpers
{
    /// <summary>
    /// 音频帮助类
    /// </summary>
    public static class AudioHelper
    {
        private static string API_KEY = "ZPWxvM4aOWjvsnTD1czCCzxl";
        private static string SECRET_KEY = "Srx6dYHGBaFqswkFvQeTmqKFLdcpjuyS";

        //var API_KEY = "Z4joOKV4gUrsL2jtkmCeaLCQ";//ZPWxvM4aOWjvsnTD1czCCzxl
        //var SECRET_KEY = "8H1n8o6qn7EIUTA9Ro1WESoF5TPdGXSc";//Srx6dYHGBaFqswkFvQeTmqKFLdcpjuyS

        /// <summary>
        /// 百度文字转语音
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public static (string url,string audioName) GenerateVoiceAsync(string pText)
        {
            //语音合成的交互类，为使用语音合成的开发人员提供了一系列的交互方法
            var _ttsClient = new Baidu.Aip.Speech.Tts(API_KEY, SECRET_KEY);
            _ttsClient.Timeout = 60000;  // 修改超时时间

            // 可选参数s
            var option = new Dictionary<string, object>()
             {
                  {"spd", 5}, // 语速取值0-15，默认为5中语速
                  {"vol", 7}, // 音量	取值0-15，默认为5中音量（取值为0时为音量最小值，并非为无声）
                  {"per", 4}  // 发音人：4。基础音库：度小宇=1，度小美=0，度逍遥（基础）=3，度丫丫=4；精品音库：度逍遥（精品）=5003，度小鹿=5118，度博文=106，度小童=110，度小萌=111，度米朵=103，度小娇=5。默认为度小美
             };

            //总字数不超过10万个字符，1个中文字、英文字母、数字或符号均算作1个字符
            var res = _ttsClient.Synthesis(pText, option);
            var url = "";
            var audioName = "";
            if (res.ErrorCode == 0)  // 或 result.Success
            {
                //url = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Files\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".mp3");

                audioName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".mp3";
                url = Environment.CurrentDirectory + "\\wwwroot\\audioFiles\\" + audioName;

                File.WriteAllBytes(url, res.Data);
            }
            return (url, audioName);
        }
    }
}
